package com.erlang4j.api.process;

import com.erlang4j.api.IMailBox;
import com.erlang4j.internal.messages.IMessageHandler;

/**
 * This is a process variable (has a mail box has matching bindings) that allows you to call receive on it/
 * 
 * 
 * <p>
 * Design notes
 * <ul>
 * <li>Without this interface any IProcess could call the receive methods, so the parameter passed to
 * {@link IMessageHandler} would allow message handlers to receive stuff. I think this would give rise to behaviour that
 * would be very hard to understand. If you actually want to do it, you can get access to receive from the result of the
 * spawn or spawnWithStateMachine methods.
 */
public interface IProcessWithReceive extends IProcess, IMailBox {

}
